// var i;
// var $bundleConfig = require("./BundleConfig");
// var $eventManager = require("./EventManager");
// var $resKeeper = require("./ResKeeper");
// var $evenType = require("./EvenType");
// var $nodePoolMag = require("./NodePoolMag");
// var $uI_BaoZha = require("./UI_BaoZha");
// var g = cc._decorator;
// var _ = g.ccclass;
// var y = (g.property, g.inspector);
// var m = (function (e) {
//     function t() {
//         return (null !== e && e.apply(this, arguments)) || this;
//     }
//     __extends(t, e);
//     t.prototype.onEnable = function () {
//         $eventManager.EventMgr.addEventListener($evenType.EVENT_TYPE.Game_Add_BaoZha, this.onAddBao, this);
//     };
//     t.prototype.onAddBao = function (e, t, o) {
//         if (void 0 === t) {
//             t = 1;
//         }
//         return __awaiter(this, void 0, void 0, function () {
//             var n;
//             var i;
//             var a;
//             return __generator(this, function (r) {
//                 switch (r.label) {
//                     case 0:
//                         if ((n = $nodePoolMag.NodePoolMag.instance.getNode("baozha"))) {
//                             return [3, 2];
//                         } else {
//                             return [
//                                 4,
//                                 this._loadRes($bundleConfig.BundleNames.Game, "prefabs/effpre/UI_BaoZha", cc.Prefab)
//                             ];
//                         }
//                     case 1:
//                         i = r.sent();
//                         $nodePoolMag.NodePoolMag.instance.createNodeCount("baozha", 1, i);
//                         n = $nodePoolMag.NodePoolMag.instance.getNode("baozha");
//                         r.label = 2;
//                     case 2:
//                         switch (
//                             ((n.x = e.x),
//                             (n.y = e.y),
//                             this.node.addChild(n),
//                             (a = n.getComponent($uI_BaoZha.default)),
//                             t)
//                         ) {
//                             case 1:
//                                 a.playBaoZa(o);
//                                 break;
//                             case 2:
//                                 a.playBingBao();
//                                 break;
//                             case 3:
//                                 a.playYinTaoBaoZha(o);
//                         }
//                         return [2];
//                 }
//             });
//         });
//     };
//     t.prototype.onDisable = function () {
//         $eventManager.EventMgr.rmEventListener($evenType.EVENT_TYPE.Game_Add_BaoZha, this.onAddBao, this);
//     };
//     return __decorate([_], t);
// })($resKeeper.default);
// exports.default = m;


// import { BundleNames } from "./BundleConfig";
// import { EventMgrInstance } from "./EventManager";
// import ResKeeper from "./ResKeeper";
// import { EVENT_TYPE } from "./EvenType";
// import { NodePoolMag } from "./NodePoolMag";
// import UI_BaoZha from "./UI_BaoZha";

// const { ccclass, property, inspector } = cc._decorator;

// /**
//  * 建议类名: BaoZhaManager
//  */
// @ccclass
// class UI_GameOhterNode extends ResKeeper {

//     /**
//      * 当组件启用时调用
//      * 建议方法名: handleEnable
//      */
//     onEnable(): void {
//         EventMgrInstance.addEventListener(EVENT_TYPE.Game_Add_BaoZha, this.onAddBao, this);
//     }

//     /**
//      * 处理添加爆炸事件
//      * @param e 爆炸位置
//      * @param t 爆炸类型
//      * @param o 其他参数
//      * 建议方法名: handleAddBao
//      */
//     async onAddBao(e: cc.Vec2, t: number = 1, o?: any): Promise<void> {
//         let node: cc.Node | null = NodePoolMag.instance.getNode("baozha");
//         if (!node) {
//             const prefab = await this._loadRes(BundleNames.Game, "prefabs/effpre/UI_BaoZha", cc.Prefab);
//             NodePoolMag.instance.createNodeCount("baozha", 1, prefab);
//             node = NodePoolMag.instance.getNode("baozha");
//         }

//         if (node) {
//             node.x = e.x;
//             node.y = e.y;
//             this.node.addChild(node);

//             const baoZhaComponent = node.getComponent(UI_BaoZha);
//             if (baoZhaComponent) {
//                 switch (t) {
//                     case 1:
//                         baoZhaComponent.playBaoZa(o);
//                         break;
//                     case 2:
//                         baoZhaComponent.playBingBao();
//                         break;
//                     case 3:
//                         baoZhaComponent.playYinTaoBaoZha(o);
//                         break;
//                 }
//             }
//         }
//     }

//     /**
//      * 当组件禁用时调用
//      * 建议方法名: handleDisable
//      */
//     onDisable(): void {
//         EventMgrInstance.rmEventListener(EVENT_TYPE.Game_Add_BaoZha, this.onAddBao, this);
//     }
// }

// export default UI_GameOhterNode;

import { BundleNames } from "./BundleConfig";
import { EventMgrInstance } from "./EventManager";
import ResKeeper from "./ResKeeper";
import { EVENT_TYPE } from "./EvenType";
import { NodePoolMag } from "./NodePoolMag";
import ViewBaoZha from "./UI_BaoZha";

const { ccclass, property, inspector } = cc._decorator;

/**
 * 建议类名: BaoZhaManager
 */
@ccclass
class ViewGameOhterNode extends ResKeeper {

    /**
     * 当组件启用时调用
     * 建议方法名: handleEnable
     */
    onEnable(): void {
        EventMgrInstance.addListener(EVENT_TYPE.Game_Add_BaoZha, this.handleAddBao, this);
    }

    /**
     * 处理添加爆炸事件
     * @param position 爆炸位置
     * @param explosionType 爆炸类型
     * @param additionalParams 其他参数
     * 建议方法名: handleAddBao
     */
    async handleAddBao(position: cc.Vec2, explosionType: number = 1, additionalParams?: any): Promise<void> {
        let explosionNode: cc.Node | null = NodePoolMag.instance.getNodeFromPool("baozha");
        if (!explosionNode) {
            const explosionPrefab = await this._loadRes(BundleNames.Game, "prefabs/effpre/UI_BaoZha", cc.Prefab);
            NodePoolMag.instance.createNodePool("baozha", 1, explosionPrefab);
            explosionNode = NodePoolMag.instance.getNodeFromPool("baozha");
        }

        if (explosionNode) {
            explosionNode.x = position.x;
            explosionNode.y = position.y;
            this.node.addChild(explosionNode);

            const baoZhaComponent = explosionNode.getComponent(ViewBaoZha);
            if (baoZhaComponent) {
                switch (explosionType) {
                    case 1:
                        baoZhaComponent.playExplosion(additionalParams);
                        break;
                    case 2:
                        baoZhaComponent.playIceExplosion();
                        break;
                    case 3:
                        baoZhaComponent.playCherryExplosion(additionalParams);
                        break;
                }
            }
        }
    }

    /**
     * 当组件禁用时调用
     * 建议方法名: handleDisable
     */
    onDisable(): void {
        EventMgrInstance.removeListener(EVENT_TYPE.Game_Add_BaoZha, this.handleAddBao, this);
    }
}

export default ViewGameOhterNode;